#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/stat.h>
#include <sys/types.h>
#include <sys/ioctl.h>
#include <stdint.h>
#include <sys/mman.h>
#include <fcntl.h>
#include <stdbool.h>
#include <errno.h>
#include <string.h>
#include <signal.h>
#include <dlfcn.h>
#include <pthread.h>
#include <linux/fb.h>
#include <dirent.h> // 目录操作
#include <grp.h>
#include <pwd.h>
#include "jpg.h"
#include "bmp.h"
#include "png_img.h"
#include "lcd.h"
#include "file_link.h"
#include "datatype.h"
#include "dir_img.h"
#include "touch_panel.h"
// enum imgfmt{JPG, BMP, PNG};

int main(int argc, char const *argv[]) // ./a.out x.jpg/x.bmp
{
    //获取目录
    const char *target=(argc==1)?".":argv[1];

    //准备LCD
    struct lcd_info lcdinfo;
    init_lcd(&lcdinfo);

    //读取目录图片的名字
    piclink head=read_imgdir(target);

    //初始化显示
    init_display(&lcdinfo, head);

    //启动触摸屏
    int tp=open("/dev/input/event0",O_RDWR);
    
    switch_display(&lcdinfo,head,tp);
    //回到前一个目录
    chdir("..");
    //显示结束图片
    struct img_info exitinfo;
    strcpy(exitinfo.name,"exit.png");
    change_display(&lcdinfo,0);
    load_png(exitinfo.name,&exitinfo);
    lcd_input(&lcdinfo,&exitinfo,0);
    
    // 5. 释放资源
    tunc_list(head);
    release_lcd(&lcdinfo);

    return 0;
}
